package frame.redis;

import io.netty.bootstrap.Bootstrap;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;

import java.nio.charset.Charset;

public class RedisClient {
    public static void main(String[] args) {
        // 换行符 \n 回车符\r\n
//        byte[] line = {13, 10};
//        EventLoopGroup worker = new NioEventLoopGroup();
//        Bootstrap bootstrap = new Bootstrap();
//
//        bootstrap.group(worker);
//        bootstrap.channel(NioSocketChannel.class);
//        bootstrap.handler(new ChannelInitializer<SocketChannel>() {
//            @Override
//            protected void initChannel(SocketChannel ch) throws Exception {
//                ch.pipeline().addLast(new LoggingHandler(LogLevel.DEBUG));
//                ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
//                    @Override
//                    public void channelActive(ChannelHandlerContext ctx) throws Exception {
//                        super.channelActive(ctx);
//                    }
//
//                    private void get(ChannelHandlerContext ctx) {
//                        ByteBuf buf = ctx.alloc().buffer();
//                        buf.writeBytes(line);
//                        buf.writeBytes("$3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("get".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("$3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("aaa".getBytes());
//                        buf.writeBytes(line);
//                        ctx.writeAndFlush(buf);
//
//                    }
//
//                    private void set(ChannelHandlerContext ctx) {
//                        ByteBuf buf = ctx.alloc().buffer();
//                        buf.writeBytes("*3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("$3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("set".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("$3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("aaa".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("$3".getBytes());
//                        buf.writeBytes(line);
//                        buf.writeBytes("bbb".getBytes());
//                        buf.writeBytes(line);
//                        ctx.writeAndFlush(buf);
//                    }
//
//                    @Override
//                    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//                        ByteBuf buf = (ByteBuf) msg;
//                        System.out.println(buf.toString(Charset.defaultCharset()));
//                    }
//                });
//            }
//        });
//        bootstrap.

    }
}
